//驱动HC-SR04超声波传感器
module hc_sr_driver (
    input           wire                    Clk					    , // 输入系统时钟，50MHz
    input           wire                    Rst_n				    , // 输入复位信号，低电平有效
    input           wire                    echo					, // 输入超声波回声信号

    output          wire                    trig				    , // 输出超声波触发信号

    //distance
    output          wire        [18:0]      data_o		            // 输出测得的距离数据，19位宽



);

// 声明一个1MHz时钟信号线
// 1MHz = 1/1000000*10^9 = 1000ns  
wire        clk_us;

// u_clk_div模块实例化，用于将系统时钟50MHz分频为1MHz时钟
clk_div u_clk_div(
	//in
    .Clk(Clk)				,// 连接系统时钟50MHzz
    .Rst_n(Rst_n)			,// 连接复位信号
	//out
    .clk_us(clk_us)    		 // 输出1MHz时钟
);


// u_hc_sr_trig模块实例化，用于产生超声波触发信号
hc_sr_trig u_hc_sr_trig(
	//in
    .clk_us(clk_us)			,  // 连接1MHz时钟
    .Rst_n(Rst_n)			,  // 连接复位信号
	//out
	.trig	    (trig   )	//输出触发测距信号
);


// u_hc_sr_echo模块实例化，用于处理回声信号并输出距离数据
hc_sr_echo u_hc_sr_echo(
	//in
    .Clk(Clk)			,   // 连接系统时钟50MHz
    .clk_us(clk_us)		,  	// 连接1MHz时钟
    .Rst_n(Rst_n)		,   // 连接复位信号
	//out
    .echo(echo)			,   // 输出超声波回声信号
    .data_o(data_o)   		// 输出距离数据，保留3位小数，乘以1000实现
);





endmodule

